/**
 * 自定义与cc引擎相关的API类库
 */
namespace vv {
    /**
     * 获取节点中首个非cc内置的自定义脚本组件
     * @param node 节点
     */
    export function getScript(node: cc.Node): any {
        if (node == null) {
            throw "node不能为空";
        }
        return node.getComponents(cc.Component).find((c: any) => {
            return c.__classname__.indexOf("cc.");
        });
    }

    /**
     * 开发阶段输出log
     * @param title 标题
     * @param msg 内容
     */
    export function log(title: any, msg?: any): void {
        if (!CC_DEBUG) {
            return;
        }
        if (msg) {
            console.log(
                `%c ${title} %c ${msg} `,
                "background: #35495E;padding: 1px;border-radius: 2px 0 0 2px;color: #fff;",
                "background: #409EFF;padding: 1px;border-radius: 0 2px 2px 0;color: #fff;"
            );
        } else {
            console.log(`%c ${title} `, "background: #409EFF;padding: 1px;border-radius: 0 2px 2px 0;color: #fff;");
        }
    }

    /**
     * 获取节点在屏幕上的坐标
     * @param node 节点
     */
    export function getCanvasSpacePos(node: cc.Node) {
        return cc.v2(cc.Canvas.instance.node.convertToNodeSpaceAR(node.convertToWorldSpaceAR(cc.v2(0, 0))));
    }
}

window.vv = vv;
